System and method for situational location relevant invocable speed reference

ABSTRACT

Situational location dependent information is transmitted from a server data processing system to a receiving data processing system. The server data processing system communicates with the receiving data processing system in a manner by pushing content when appropriate. A candidate delivery event associated with a current positional attribute of the receiving data processing system is recognized and a situational location of the remote data processing system is determined. The candidate delivery event may be a location and/or direction change, device state change, or movement exceeding a movement tolerance. The situational location of the remote data processing system may be its location, direction, location and direction, proximity to a location, state change, or location and/or direction relative to a previous location and/or direction, or combinations thereof. A set of delivery content from a deliverable content database is transmitted from the server data processing system to the receiving data processing system according to the situational location of the receiving data processing system, and according to delivery constraints. The delivery content is configurable by authorized administrators on an instant activation basis for proactive delivery.

CROSS-REFERENCES TO RELATED APPLICATIONS

The present application is a continuation of and claims priority topending U.S. application Ser. No. 12/772,909, filed May 3, 2010, whichis a continuation of U.S. patent application Ser. No. 11/767,190, filedJun. 22, 2007, now U.S. Pat. No. 7,710,290, issued May 4, 2010, which isa divisional application of co-pending application Ser. No. 11/464,671,filed Aug. 15, 2006, entitled “System and Method for Proactive ContentDelivery by Situational Location”, which is a divisional application ofapplication Ser. No. 10/823,386, filed on Apr. 12, 2004, entitled“System and Method for Proactive Content Delivery By SituationalLocation”, now U.S. Pat. No. 7,187,997, issued Mar. 6, 2007, which is adivisional application of application Ser. No. 10/167,532, filed Jun.11, 2002, entitled “Method and System for Proactive Content Delivery bySituational Location”, now U.S. Pat. No. 6,731,238, issued May 4, 2004,which is a divisional of application Ser. No. 09/589,328 filed on Jun.7, 2000, entitled “System and Method for Proactive Content Delivery BySituational Location,” now U.S. Pat. No. 6,456,234, issued Sep. 24,2002.

BACKGROUND OF THE INVENTION

The present invention relates generally to location dependent deliveryof information to mobile data processing systems, and more particularlyto a system for pushing situational location dependent content to dataprocessing system devices traveling to locations for, or in directionsof, that place which delivery content is designated as deliverable.

The boom of the internet has greatly provided information to mobileusers through wireless web server connected devices such as laptops,personal digital assistants (PDAs), and telephones. People with aninternet enabled device can access yahoo.com (yahoo is a trademark ofYahoo corporation) and other internet connected resources. There arealso Global Positioning System (GPS) devices that enable mobile users toknow exactly where they are on a particular map. Users with GPS devicefunctionality can further manually enter their known location into aninternet MAP directory service (e.g. yahoo.com Maps) and then provide atarget address they want to go to. Step by step instructions are thenprovided to the user for how to get to the destination from the currentlocation. Some GPS devices provide local processing for directing, andnarrating to, a driver. Mating automated location finding systems withinternet travel direction services is an attractive blend.

Cadillac recently announced the OnStar program with sales of Cadillacautomobiles (Cadillac and OnStar are trademarks of General Motorscorporation). A person is enabled with calling upon an “OnStar Advisor”7 days a week, 24 hours a day, with the press of a button. An emergencycall, for example 911, or for a disabled Cadillac vehicle, allows adriver to instantly call upon wireless connected assistance. The drivermay also call upon the OnStar Advisor for directions to a destination.The Advisor has access to automatic processing for determination of thevehicle's current location in case of auto theft, a disabled vehicle, orassisting with directions. The Advisor can also remotely unlock thevehicle should the driver lock the keys in the car. In effect, Cadillacdrivers have full time wireless connected assistance around the clockfor many reasons. While the location determination of the vehicle isautomatic, there remain manual processes performed by the Advisor.Automation of some of these processes is desirable.

Many internet services derive their revenue stream from advertising.Advertisers pay to have their content delivered to users who access website and web server interfaces. Advertisers desire to target theiraudience at the most appropriate time. Knowing the location of a user asbeing relevant to a particular advertisement is desirable. Automatingthe delivery of the content is desirable.

A method is needed for a low cost business model that enables theefficient configuration of deliverable content for automatic delivery tomobile users based on their situational location that is relevant toreceive such content.

BRIEF SUMMARY OF THE INVENTION

The present invention provides transmission of situational locationdependent information from a server data processing system (SDPS) to areceiving data processing system (RDPS). The server data processingsystem (SDPS) communicates with the receiving data processing system(RDPS) by pushing content (i.e. proactive content delivery) whenappropriate, rather than in response to a user query. A candidatedelivery event associated with a current positional attribute of thereceiving data processing system is recognized and a situationallocation of the remote data processing system is determined. Thecandidate delivery event may be a location and/or direction change,device state change, or movement exceeding a movement tolerance. Thesituational location of the remote data processing system may be itslocation, direction, location and direction, proximity to a location,state change, or location and/or direction relative to a previouslocation and/or direction, or combinations thereof. At the SDPS, a setof delivery content from a deliverable content database is retrievedaccording to the situational location of the RDPS, and according tosystem delivery constraints and/or configured user delivery constraints.The SDPS transmits any applicable content found to the RDPS. Thedelivery content is configurable by authorized administrators in amanner that enables the configured content for immediate delivery shoulda RDPS meet the criteria of the associated situational location anddelivery constraints.

Various embodiments with respect to recognizing a candidate deliveryevent and determining a situational location include:

-   -   the SDPS recognizes the candidate delivery event (e.g. various        wireless embodiments and physical connection embodiments)    -   the RDPS recognizes the candidate delivery event (e.g. GPS and        some wireless)    -   the SDPS determines the situational location associated with the        candidate delivery event which may have been determined by the        RDPS and communicated to the SDPS, or determined by the SDPS    -   the RDPS determines the situational location associated with the        candidate delivery event and communicates the information to the        SDPS for further processing

A situational location is completely determined for the RDPS upon thecandidate delivery event. Content that can be delivered is fullyconfigurable, of any type, and can be instantly activated for candidatedelivery upon convenient administration. As well known in the art ofsoftware installation, the present invention may be installed to avariety of network embodiments and underlying operating systems throughinstallation parameters, or as distinct installations for the particularplatform. Preferably, an internet connection is used for configuringdeliverable content, and for the interoperation of communicationsbetween the RDPS and SDPS.

The present invention enables a user of a RDPS to be made aware ofcontent that is applicable for the current situational location of theuser. Depending on the application of the present invention, the contentand configurations will take on a variety of themes.

For example, in an outdoor wireless embodiment of the present invention,advertisement content can be configured by paying customer advertisersthrough an internet web interface, and then automatically delivered topeople when the people are in a location, or heading path to a location,for reasonable delivery of the content to their automobile installed, orhandheld, RDPS. For example, as a driver or pedestrian (i.e. user)approaches a retail store with a mobile RDPS, a configured advertisementof a special deal at the retail store can be proactively delivered (i.e.pushed) to the user automatically on behalf of the store. Likewise, anindoor wireless embodiment of the present invention enables the driveror pedestrian, now a shopper inside the store, to receive configuredcontent to a shopping cart mounted, or handheld, RDPS directing theshopper to specific sales items as the shopper moves about the inside ofthe store.

In another application, a policeman may activate a mobile policeautomobile device (i.e. RDPS) in a police car for automatic delivery ofa person's criminal record as the policeman drives by the location of aperson's house. The police establishment configures criminal recordcontent, or pointers thereto, along with the location of the residencethat is believed to harbor the person with a record. As the policemandrives by locations with addresses of known offenders, the RDPS displaysapplicable criminal data. Of course, the policeman can enable or disablethe functionality as needed.

In another application, a traveling vehicle, for example a touring bus,carries tourists for a narrated drive through a geographic area.Currently, there are human narrators for providing narration of sitesand landmarks to people of the narrated drive. The present inventionallows configuring deliverable content for locations on the touring buspath so that an automated narrator RDPS installed in the bus can beprovided to people on the bus. For example, an RDPS providing audio,video, multimedia, or combination thereof, communicates narrationcontent to people on the touring bus automatically as locations areencountered, or driven by.

In another application, a person attending a large park (e.g. DisneyWorld (Disney World is a trademark of Walt Disney corporation)) couldsimply carry a RDPS, and receive content to a handheld device for whatattraction lies ahead based on the current location and direction of theperson. The person would not have to consult a directory or ask where tofind something. Informative content would be proactively delivered,rather than reactively in response to a person's manual query to aservice, or question to a human being.

In yet a further example, a valuable use would be for emergencies suchas when a child is kidnapped. Currently, there is an Amber-Alertmechanism in Dallas/Ft. Worth, Tex. where radio stations broadcast anemergency message along with a distinguishable series of tones. Thisenables any pertinent information known about the kidnapper and child tobe broadcast immediately to everyone with the radio on. The presentinvention enables the emergency broadcast to be immediately configuredand then communicated to everyone with a RDPS, for example with awireless internet connection. A picture of the victim and othermultimedia information could be delivered along with audio immediately.

In still a further use of the present invention, garage sale and estatesale advertisements could be configured on behalf of paying customersthat would otherwise use a newspaper classified section. As driversbecome in reasonably close proximity to the sale, in the desired timewindow, advertisement content would be proactively delivered to awireless RDPS installed, or handheld, in the automobile.

Thus, there are many applications for the present invention, allaccomplished through simply changing the way the present invention isused. Content is pushed out to receiving devices at the most appropriatetimes. Users do not pull the content with a query.

It is therefore an advantage of the present invention in supporting avariety of applications and uses. The way the invention is used makes itapplicable to a wide range of applications. For example, a deliverablecontent database can be configured with content that is appropriate forthe particular application. Situational location parameters associatedwith the particular application are also variable, provided theinstalled methodology is utilized consistently. For example, worldcoordinates, GPS coordinates, regional coordinates, MAPSCO references,Application Address Book locations and directions, a user's caller id, acell number in a cellular network, and like means used to describe alocation can be used. Directional information of North, South, East,West, Northeast, Southeast, Northwest, Southwest, Up, Down, Left, Right,Straight, Back, and like methods used to describe a direction can beused. Further still, there are delivery constraints that can be set upfor a system, or configured by a user, which provides flexibility inadapting to a variety of applications.

It is another advantage of the present invention in providingdeliverable content to a person, based on the situational location ofthe person. Content is pushed to a user's RDPS when it is mostappropriate for the user to see the content.

It is another advantage of the present invention in automaticallyrecognizing a candidate delivery event of a RDPS and automaticallydetermining a situational location of the RDPS. A user is not burdenedwith providing information on a query. The present inventionautomatically determines when content should be delivered and thenautomatically and proactively delivers it. Content is pushed to the user(of the RDPS). The user is not burdened with pulling content via aquery.

It is a further advantage of the present invention to deliver any type,variety, or combination of content. The content is fully configurable byan authorized administrator who may be a paying customer for theprivilege of performing configurations. Upon configuration, the contentis immediately and instantly activated for proactive delivery to anyRDPS meeting the configured criteria. Content may be audio, video,graphical, textual, multimedia, intranet/internet web address(es)activated for transposable selection, image, or any combination thereof.

It is another advantage in maintaining a history of delivered content atthe RDPS with information that is useful for later browsing. Containedtherein is information relevant to the delivered content. Additionally,provided is an invocable speed address enabling the user to transpose toa web address, or perform a speed dial phone call, that is associatedwith the delivered content.

Yet another advantage of the present invention is providing new anduseful query functionality for querying the total number of knownreceiving data processing systems for a particular situational location,querying any content configured for delivery to a particular situationallocation with a comprehensive variety of query parameters, and queryingup to a maximum threshold number of deliverable content instances for aparticular location in a manner which automatically determinescontaining (ascending) locations, if necessary, until the specifiednumber is met.

Further features and advantages of the invention, as well as thestructure and operation of various embodiments of the invention, aredescribed in detail below with reference to the accompanying drawings.In the drawings, like reference numbers generally indicate identical,functionally similar, and/or structurally similar elements. The drawingin which an element first appears is indicated by the leftmost digit(s)in the corresponding reference number.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be described with reference to theaccompanying drawings, wherein:

FIG. 1 depicts a network illustration for discussing the various outdoorembodiments of the present invention;

FIG. 2 depicts an aerial view of a city region useful for discussingaspects of the present invention;

FIG. 3A depicts a locating by triangulation illustration for discussinga wireless, or cellular, embodiment of the present invention;

FIG. 3B depicts a flowchart for describing a preferred embodiment of thecandidate delivery event generation aspect relevant to a wireless, orcellular, embodiment of the present invention, in the context ofpositional attribute(s) being monitored by a SDPS;

FIG. 3C depicts a flowchart for describing a preferred embodiment of thecandidate delivery event generation aspect relevant to a wireless, orcellular embodiment, of the present invention, in the context ofpositional attribute(s) being monitored by a RDPS;

FIG. 4A depicts a locating by triangulation illustration for discussinga GPS, or satellite, embodiment of the present invention;

FIG. 4B depicts a flowchart for describing a preferred embodiment of thecandidate delivery event generation aspect relevant to a GPS, orsatellite, embodiment of the present invention;

FIG. 5A depicts a locating by triangulation illustration for discussingan indoor wireless embodiment of the present invention;

FIG. 5B depicts a flowchart for describing a preferred embodiment of thecandidate delivery event generation aspect relevant to an indoorwireless embodiment of the present invention;

FIG. 6 depicts a flowchart for describing a preferred embodiment of thecandidate delivery event generation aspect relevant to a physicallyconnected embodiment of the present invention;

FIG. 7A depicts a preferred embodiment of a data record in thedeliverable content database of the present invention;

FIG. 7B depicts a preferred embodiment of a data record in the keyworddata of the present invention;

FIG. 8 depicts a preferred embodiment of a data record in the locationhierarchy data of the present invention;

FIG. 9A depicts a preferred embodiment of a data record in theregistration data of the present invention;

FIG. 9B depicts a preferred embodiment of a data record in the locationhistory data of the present invention;

FIG. 9C depicts a preferred embodiment of a data record in the SDPStransmission history data of the present invention;

FIG. 9D depicts a preferred embodiment of a data record in the RDPStransmission history data of the present invention;

FIG. 10A depicts a preferred embodiment high level examplecomponentization of a RDPS of the present invention when the RDPSgenerates the candidate delivery event;

FIG. 10B depicts a preferred embodiment high level examplecomponentization of a RDPS of the present invention when the SDPSgenerates the candidate delivery event;

FIG. 10C depicts a block diagram of a data processing system useful forimplementing RDPS aspects of the present invention, and SDPS aspects ofthe present invention;

FIG. 11 depicts a flowchart for describing data processing systemaspects relevant to a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event determination bythe RDPS;

FIGS. 12A and 12B depict flowcharts for describing user event managementprocessing aspects of a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event determination bythe RDPS;

FIG. 13 depicts a flowchart for describing system event managementprocessing aspects of a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event determination bythe RDPS;

FIG. 14 depicts a flowchart for describing the content administrationaspects of the present invention;

FIGS. 15A, 15B, and 15C depict flowcharts for service event handlingaspects of a preferred embodiment of the SDPS of the present invention,in the context of candidate delivery event determination by the RDPS;

FIG. 16 depicts a flowchart for describing the content transmissionaspects of the present invention;

FIG. 17 depicts a flowchart for describing data processing systemaspects relevant to a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event determination notby the RDPS;

FIGS. 18A and 18B depict flowcharts for describing user event managementprocessing aspects of a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event determination notby the RDPS;

FIG. 19 depicts a flowchart for describing system event managementprocessing aspects of a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event determination notby the RDPS; and

FIGS. 20A, 20B, and 20C depict flowcharts for service event handlingaspects of a preferred embodiment of the SDPS of the present invention,in the context of candidate delivery event determination not by theRDPS.

DETAILED DESCRIPTION OF THE INVENTION

With reference now to detail of the drawings, the present invention isdescribed. Obvious errorhandling is omitted from the flowcharts in orderto focus on the key aspects of the present invention.

FIG. 1 depicts a network illustration for discussing the various outdoorembodiments of the present invention. In one embodiment, a cellularnetwork cluster 102 and cellular network cluster 104 are parts of alarger cellular network. Cellular network cluster 102 contains acontroller 106 and a plurality of base stations, shown generally as basestations 108. Each base station covers a single cell of the cellularnetwork cluster, and each base station 108 communicates through awireless connection with the controller 106 for call processing, as iswell known in the art. Wireless devices communicate via the nearest basestation (i.e. the cell the device currently resides in), for examplebase station 108 b. Roaming functionality is provided when a wirelessdevice roams from one cell to another so that a session is properlymaintained with proper signal strength. Controller 106 acts like atelephony switch when a wireless device roams across cells, and itcommunicates with controller 110 via a wireless connection so that awireless device can also roam to other clusters over a largergeographical area. Controller 110 may be connected to a controller 112in a cellular cluster through a physical connection, for example, copperwire, optical fiber, or the like. This enables cellular clusters to begreat distances from each other. Controller 112 may in fact be connectedwith a physical connection to its base stations, shown generally as basestations 114. Base stations may communicate directly with the controller112, for example, base station 114 e. Base stations may communicateindirectly to the controller 112, for example base station 114 a by wayof base station 114 d. It is well known in the art that many optionsexist for enabling interoperating communications between controllers andbase stations for the purpose of managing a cellular network. A cellularnetwork cluster 116 may be located in a different country. Basecontroller 118 may communicate with controller 110 through a PublicService Telephone Network (PSTN) by way of a telephony switch 120, PSTN122, and telephony switch 124, respectively. Telephony switch 120 andtelephony switch 124 may be private or public. In one cellular networkembodiment of the present invention, the SDPS executes at controllers,for example controller 110. The RDPS executes at a wireless device, forexample mobile laptop computer 126, wireless telephone 128, a personaldigital assistant (PDA) 130, or the like. As the RDPS moves about,positional attributes are monitored for determining a situationallocation. The RDPS may be handheld, or installed in a moving vehicle.Locating a wireless device using wireless techniques such as TimeDifference of Arrival (TDOA) and Angle Of Arrival (AOA) are well knownin the art. The SDPS may also execute on a server computer accessible tocontrollers, for example server computer 132, provided an appropriatetimely connection exists between cellular network controller(s) and theserver computer 132. Wireless devices (i.e. RDPS) are known by a uniqueidentifier, for example a caller id, device identifier, or likeappropriate unique handle.

In another embodiment of the present invention, GPS satellites such assatellite 134, satellite 136, and satellite 138 provide information, asis well known in the art, to GPS devices on earth for triangulationlocating of the GPS device. In this embodiment, a RDPS has integratedGPS functionality so that the RDPS monitors its positional attribute(s).When the RDPS determines a candidate delivery event, it communicatesparameters to the controller by way of the nearest base station. Thus,positional attribute information is provided by the RDPS to the SDPS.The RDPS is again known by a unique identifier, for example a caller id,device identifier, or like appropriate unique handle.

In yet another embodiment of the present invention, a physicallyconnected device, for example, telephone 140, computer 142, PDA 144,telephone 146, and fax machine 148, may be newly connected to a network.Each is a RDPS. Physical connections include copper wire, optical fiber,or the like. Devices are known by a unique identifier, for example acaller id, device identifier, physical or logical network address, orlike appropriate unique handle. When the RDPS is detected for beingnewly located, the SDPS determines the candidate delivery event. TheSDPS may execute at an Automatic Response Unit (ARU) 150, a telephonyswitch, for example telephony switch 120, a web server 152 (for example,connected through a gateway 154), or a like data processing system thatcommunicates with the RDPS. RDPS detection may be a result of the RDPSinitiating a communication with the SDPS directly or indirectly. Thus, auser may connect his laptop to a hotel network, initiate a communicationwith the SDPS, and the SDPS determines that the user is in a differentlocation than the previous communication. A local area network (LAN) 156may contain a variety of connected devices, each an RDPS that laterbecomes connected to a local area network 158 at a different location,such as a PDA 160, a server computer 162, a printer 164, an internetprotocol telephone 166, a computer 168, or the like. Hard copypresentation could be made to printer 164 and fax 148. Electroniccontent could be delivered to any RDPS.

Current technology enables devices to communicate with each other, andother systems, through a variety of heterogeneous system andcommunication methods. Current technology allows executable processingto run on diverse devices and systems. Current technology allowscommunications between the devices and/or systems over a plethora ofmethodologies at close or long distance. Many technologies also existfor automatic locating of devices. It is well known how to have aninteroperating communications system that comprises a plurality ofindividual systems communicating with each other with one or moreprotocols. As is further known in the art of developing software,executable processing of the present invention may be developed to runon a particular target data processing system in a particular manner, orcustomized at install time to execute on a particular data processingsystem in a particular manner.

FIG. 2 depicts an aerial view of a city region useful for discussingaspects of, and helps explain one application of, the present invention.A Starbucks coffee shop 202 (Starbucks is a trademark of Starbuckscorporation) is located in an area frequented by handheld wirelessdevice (i.e. RDPS) user pedestrians, for example pedestrian 204, andwireless device (i.e. RDPS) equipped vehicles, for example automobile206 and automobile 208. Starbucks is a paying customer to the owner ofthe present invention wherein content can be configured for advertisingto potential customers of Starbucks. An authorized and authenticatedStarbucks representative uses the present invention, for example by wayof an internet connected web browser, to configure the deliverablecontent. The representative also configures situational locationinformation that is to be matched to situational locations of a RDPS ofmobile customers. Upon configuration completion, the content isimmediately activated for proactive delivery. The present invention willautomatically deliver the Starbucks configured content to any RDPSaccording to the representative's configurations, for example, whenpedestrian 204 becomes in a specified proximity to the Starbuckslocation, encounters a specific location, travels in a manner whichprovides predictive information, heads in a specified direction at, to,or from a location, or the like, using positional attribute(s).Likewise, automobile 206 will receive the content according toconfigurations, for example, when making a left hand turn (i.e. changingdirection at a location area) onto the street bearing Starbucks'address. Likewise, automobile 208 will receive the content according toconfigurations, for example, when encountering a location in proximityto the Starbucks location while heading North. One example of thecontent may be a textual message such as “Starbucks has a 60% off salejust ahead at 314 Main Street with free no-spill coffee mugs!!!”. Otherexamples may include a graphical map showing where the Starbucksestablishment is in relation to showing where the RDPS is currentlylocated and headed.

FIG. 3A depicts a locating by triangulation illustration for discussinga wireless, or cellular, embodiment of the present invention. A RDPS 302is located through triangulation, as is well known in the art. At leastthree base towers, for example, base tower 108 b, base tower 108 d, andbase tower 108 f, are necessary for locating the RDPS. A fourth basetower would be used if altitude was configured for use by the presentinvention. There are cases where only two base towers are necessarygiven routes of travel are limited and known, for example, in spread outroadways or limited configured locations.

FIG. 3B depicts a flowchart for describing a preferred embodiment of thecandidate delivery event generation aspect relevant to a wireless, orcellular, embodiment of the present invention, in the context ofpositional attribute(s) being monitored by a SDPS. Processing begins atblock 310 and continues to block 312 where base stations able tocommunicate to any degree with a RDPS continue reporting to theircontroller the RDPS signal strength with an RDPS identifier (i.e. aunique handle) and Time Difference of Arrival (TDOA) information, oralternatively, Angle of Arrival (AOA) information, depending on theembodiment. When the RDPS turns on, it registers itself. The RDPS canpick signals from base stations. In one embodiment, the RDPS monitors apaging channel, called a forward channel. There can be multiple forwardchannels. A forward channel is the transmission frequency from the basetower to the RDPS. Either the RDPS provides heartbeat for base stations,or the base stations provide heartbeats for a response from the RDPS.Communication from the RDPS to the base tower is on what is called thereverse channel. Forward channels and reverse channel are used toperform call setup for a created session channel.

TDOA is conventionally calculated from the time it takes for acommunication to occur from the RDPS back to the RDPS via the basetower, or alternatively, from a base tower back to that base tower viathe RDPS. AOA is conventionally performed through calculations of theangle by which a signal from the RDPS encounters the base tower antenna.Simple triangle geometry is then used to calculate a location. The AOAantenna is typically of a phased array type.

The controller at block 314 may communicate with other controllers whenbase stations in other cellular clusters are picking up a signal, forexample, when the RDPS roams. In any case, at block 314, thecontroller(s) determines the strongest signal base stations needed forlocating the RDPS, at block 314. The strongest 3 (or 2 or 4 as discussedabove) are used. Thereafter, block 316 accesses base station locationinformation for base stations determined at block 314. The base stationprovides location anchors used to (relatively) determine the location ofthe RDPS. Then, block 318 uses the TDOA, or AOA, information togetherwith known base station locations to calculate the RDPS location. Blocks310 through 318 are well known to those skilled in art. Thereafter,block 320 accesses historical RDPS location information, and block 322performs housekeeping by pruning location history data for the RDPS bytime, number of entries, or other criteria. Block 324 then determines adirection of the RDPS based on previous location information. Block 324may perform Artificial Intelligence (AI) to determine where the travelermay be going by consulting many or all of the location history data.Block 324 may also consider when and/or where a candidate delivery event(CADE) was generated for a direction change in order to cause certainflow from block 330. Block 326 calculates how much (e.g. distance) theRDPS has moved since the previous location that caused a candidatedelivery event (CADE) generation for the RDPS (event generated Y/N fieldin location history data). Thereafter, block 328 compares the movementsince the last CADE generation, and if the distance exceeds a movementtolerance, then block 332 posts (generates) a CADE to a presentinvention service handling RDPS situational location changes. Themovement tolerance may be a system wide setting for all RDPS devices,particular to a type of RDPS, or specific for an RDPS.

If, at block 328, movement did not exceed the tolerance, then block 330checks for a direction change as determined at block 324. If, at block330, the direction did change, then a CADE is generated at block 332.If, at block 330, the direction of the RDPS did not change, then block334 appends an appropriate entry to the location history data (see FIG.9B). Block 332 also flows to block 334. Blocks 324 through 330 determineif a CADE is to be generated, and if so, a CADE is generated at block332. Blocks 324 through 330 determine part, or all, (i.e. a subset) ofthe situational location, depending on the installation. FIG. 3Bprocessing is continuous for every RDPS in the wireless network 7 days aweek, 24 hours a day.

FIG. 3C depicts a flowchart for describing a preferred embodiment of thecandidate delivery event generation aspect relevant to a wireless, orcellular, embodiment, of the present invention, in the context ofpositional attribute(s) being monitored by a RDPS.

FIG. 3B demonstrated the CADE and part, or all, of the situationallocation being determined by a SDPS service. FIG. 3C demonstrates theCADE, and part, or all, of the situational location being determined bythe RDPS itself, and then communicated to the SDPS for any furthersituational location determination and applicable content delivery.Communications between the base stations and RDPS is similar to aboveexcept the RDPS receives information for performing calculations andrelated processing. Processing begins at block 350 and continues toblock 352 where the RDPS continues receiving pulse reporting from basestations. Block 354 determines the strongest 3 signals (or 2 or 4).Thereafter, block 356 parses base station location information from thepulse messages that are received by the RDPS. Block 358 communicateswith base stations to perform TDOA calculations. The time it takes for acommunication to occur from the RDPS back to the RDPS, or alternatively,from a base tower back to that base tower is used. Block 358 uses theTDOA information with the known base station information to determinethe RDPS location. Blocks 350 through 358 are well known to thoseskilled in art.

Thereafter, block 360 accesses historical RDPS location information, andblock 362 performs housekeeping by pruning the location history data forthe RDPS by time, number of entries, or other criteria. Block 364 thendetermines a direction of the RDPS based on previous locationinformation. Block 364 may perform Artificial Intelligence (AI) todetermine where the traveler may be going by consulting much or all ofthe location history data. Block 364 may also consider when and/or wherea candidate delivery event (CADE) was generated for a direction changein order to cause certain flow from block 370. Block 366 calculates howmuch (e.g. distance) the RDPS has moved since the previous location thatcaused a candidate delivery event (CADE) generation for the RDPS (eventgenerated Y/N field in location history data). Thereafter, block 368compares the movement since the last CADE generation and if the distanceexceeds a movement tolerance, then block 372 posts (generates) a CADE tothe present invention system event manager of the RDPS. The movementtolerance may be a system or user configured setting.

If, at block 368, movement did not exceed the tolerance, then block 370checks for a direction change as determined at block 364. If, at block370, the direction did change, then a CADE is generated to the systemevent manager at block 372. If, at block 370, the direction of the RDPSdid not change, then block 374 appends an appropriate entry to thelocation history data (see FIG. 9B). Block 372 also flows to block 374.Blocks 364 through 370 determine if a CADE is to generated, and if so, aCADE is generated at block 332. Blocks 364 through 370 determine part,or all, (i.e. a subset) of the situational location, depending on theinstallation. FIG. 3C processing is continuous for the RDPS as long asthe RDPS is enabled.

FIG. 4A depicts a locating by triangulation illustration for discussinga GPS, or satellite, embodiment of the present invention. A RDPS 402 islocated through GPS triangulation as is well known in the art. At leastthree satellites, for example, satellite 134, satellite 136, andsatellite 138, are necessary for locating the RDPS. A fourth satellitewould be used if altitude was configured for use by the presentinvention.

FIG. 4B depicts a flowchart for describing a preferred embodiment of thecandidate delivery event generation aspect relevant to a GPS, orsatellite, embodiment of the present invention. GPS location processingbegins at block 410 and continues to block 412 where the RDPSinitializes for using a system management interface. The system eventmanager may be a software interrupt, hardware interrupt, queue, or otherevent handling entity. Block 414 performs the conventional locating ofthe GPS enabled RDPS, and block 416 posts (generates) a CADE to the RDPSsystem event manager. Block 414 may be an implicit wait for pulses fromsatellites, or an event driven mechanism when GPS satellite pulses arereceived for synchronized collection. Block 414 processing is well knownin the art. Block 416 may post the event information to other processesdepending on the RDPS features using such information. Thereafter, theGPS location information is used at block 418 as applicable to theparticular RDPS embodiment, for example showing the RDPS location on agraphical map. GPS location processing is continuous for the RDPS aslong as the RDPS is enabled.

The CADE in this example is a result of a simple location change. Anyfurther situational location determination task remains for the systemevent manager. An alternative embodiment to block 414 would furtherinclude processing of FIG. 3C blocks 360 through 370 to determine part,or all, (i.e. a subset) of the situational location so that a CADE isgenerated at block 416 only if the situation warrants it.

FIG. 5A depicts a locating by triangulation illustration for discussingan indoor wireless embodiment of the present invention. There may becommunication/transmission issues when an RDPS is taken indoors. Thereare also unique applications of the present invention for indoor use.Shown is a top view of an indoor floor plan 502. Antenna stations 504(shown generally as 504) are strategically placed over the area so thatan RDPS, for example, an RDPS equipped shopping cart 506, can belocated. The conventional triangulation techniques again apply. At leastthree antenna stations, for example, station 504 f, station 504 h, andstation 504 i are used to locate the RDPS equipped shopping cart 506. Infloor plan embodiments where aisles delimit travel, only two antennastations may be necessary, for example at either end of the particularaisle. While most stations 504 may receive signals from the RDPS, onlythe strongest stations are used.

In this example embodiment of using the present invention, a shopperwith a grocery cart receives content at the RDPS as the shopping cart isnavigated throughout the store. Special deal, sales, or otherpromotional content is pushed automatically by the present invention tothe RDPS of the shopping cart, at appropriate situational locations ofthe shopping cart. A store representative will manage what content todeliver through convenient configuration of the present invention. Thestore will provide RDPS equipped shopping carts, or may provide handheldRDPS devices, so that shoppers will get the most of their experience byautomatically receiving content that is appropriate to the shopper'ssituational location in the store.

FIG. 5B depicts a flowchart for describing a preferred embodiment of thecandidate delivery event generation aspect relevant to an indoorwireless embodiment of the present invention. In one embodiment, indoorlocation technology of Pinpoint corporation (Pinpoint is a trademark ofPinpoint Corporation) is utilized to locate any RDPS that moves aboutthe indoor location. The Pinpoint corporation methodology begins atblock 510 and continues to block 512. A cell controller drives antennastations to emit a broadcast signal from every station. Any RDPS withinrange (i.e. indoors), will phase modulate its unique identifier onto areturn signal it transmits, at block 514. Stations at block 516 receivethe transmission and strength of signal. The cell controller that drivesstations sorts out and selects the strongest 3 signals. The cellcontroller, at block 518, also extracts the RDPS unique identifier fromthe return signal, and TDOA (or AOA if phase array antennas are used) isused to calculate distances from the stations receiving the strongestsignals from the RDPS at block 520. The locations of the controllerselected stations are registered in an overlay map in an appropriatecoordinate system, landmark system, or grid of cells. Block 522 locatesthe RDPS using the overlay map, locations of the 3 selected stations,and the calculated distances triangulated from the selected stations.Processing through block 522 has located the RDPS with known Pinpointcorporation technology. Thereafter, a block 524 can perform a CADEgeneration to a SDPS service of the present invention. Processingcontinues with repeated broadcast at block 512 and subsequent processingfor every RDPS.

The CADE in this example is a result of a simple location change. Anyfurther situational location determination task remains for the SDPSevent handler. An alternative embodiment to block 524 would furtherinclude processing of FIG. 3B blocks 320 through 330 to determine part,or all, (i.e. a subset) of the situational location so that a CADE isgenerated at block 524 only if the situation warrants it.

FIG. 6 depicts a flowchart for describing a preferred embodiment of thecandidate delivery event generation aspect relevant to a physicallyconnected embodiment of the present invention. A RDPS may be newlylocated and physically connected, whereby communications between theRDPS and SDPS is over a physical connection. With reference now to FIG.1, when a RDPS, for example internet protocol telephone 166, is movedfrom LAN 156 to a LAN 158 in a different location, the present inventiondetects the location change when the RDPS initiates a communication tothe SDPS. With reference back to FIG. 6, relevant processing accordingto the present invention begins at block 602 and continues to block 604where an RDPS device is physically connected to a network. Thereafter,the RDPS accesses a SDPS incorporating the present invention, at block606. Then, at block 608, the SDPS accesses historical RDPS locationinformation (i.e. the previous location history data record 900—see FIG.9B location history data discussion below), and block 610 performshousekeeping by pruning the location history data maintained for theRDPS by time, number of entries, or other criteria. Block 608 mayperform Artificial Intelligence (AI) to determine where the traveler maybe going (e.g. using direction based on previous locations) byconsulting much or all of the location history data. Thereafter, SDPSprocessing, at block 612, compares the current network address with theprevious network address. If they are identical, then SDPS processingcontinues to block 616. If they are different, then the SDPS generates aCADE to the event handling service of the SDPS at block 614. Thereafter,SDPS processing continues to block 616. Block 616 appends an entry tothe location history data for the RDPS, and SDPS processing ends atblock 618. Block 612 may compare to other location history datainformation, depending on any AI of block 608.

FIG. 7A depicts a preferred embodiment of a data record in thedeliverable content database of the present invention. A deliverablecontent database record 700 includes fields 702 through 724 as shown.Rec id field 702 is a unique identifier to the record in the database.Rec id field 702 is system generated, for example, using an Oracleunique sequence number function (Oracle is a trademark of Oraclecorporation) upon inserting the record (i.e. database row) into thedeliverable content database (i.e. database table). The rec id field 702is used in the transmission history data to correlate transmittedcontent, enables detection of redundant delivery, and enables later RDPSretrieval of content when only a content delivery indicator istransmitted to an RDPS. Location field 704 contains a positionalattribute of location information for which the associated content willbe delivered. Depending on the installation, the location field containsa cellular network cell identifier, truncated precision geocentriccoordinates, truncated precision geodetic coordinates, truncated threedimensional space coordinates, area described by GPS coordinates (e.g.four corners of a grid rectangle), overlay grid region identifier orcoordinates, GPS coordinates with truncated precision, altitude, MAPSCOreference, telephone number (e.g. caller id), physical or logicalnetwork address (including a wildcard (e.g. ip addresses 145.32.*.*)),particular application address, or a like location. Truncated precisionallows specifying a broader scope, for example, latitude/longitude indegrees, minutes, seconds, etc., depends on how the number is truncated.Zooming in implies more precision. Zooming out implies less precision.Combinations of these positional attributes may also designate alocation. Depending on the installation, the positional attributedirection field 706 contains a direction such as North, South, East,West, or Southwest, Southeast, Northwest, Northeast, or Left, Right,Straight, Back, or Up, Down, or the like. A value of null may also bepresent when a direction is inappropriate, for example in one embodimentof FIG. 6. Time criteria field 708 contains a time window(s), or timeinterval(s), for which the associated deliverable content is valid fordelivery. Preferably, time points of time criteria are entered in“YYYYMMDDHHMMSS” format. Content type field 710 describes the type ofcontent field 712. Content types include, and are not limited to, webaddress, audio, image, multimedia, text, and video. The content field712 contains the deliverable content, or a reference such as a filename,pointer, or the like, to the content. Short Text info field 714 allowsconfiguration of a short textual message to be delivered to the RDPS andmaintained in the RDPS transmission history data, for example, abusiness address. Speed reference info 716 is a web address or phonenumber that is delivered to the RDPS with the content, and is alsomaintained in the RDPS transmission history for convenient invocation.Thus, the user may browse the history, and invoke the speed referencefor automatic telephone call dialing from the RDPS, or for automatic webaddress transposition in a launched web browser, upon a simple userselection of the speed reference from the history. Depending on theinstallation, delivery activation setting(s) field 718 will contain abit mask, or the like, for the RDPS state which establishes delivery.For example, the bit mask will contain a settable bit for:

-   -   Deliver on RDPS registration    -   Deliver on RDPS termination    -   Deliver only when RDPS requests    -   Deliver always (used for emergency use—see Amber-Alert        discussion above)    -   Deliver for situational location change    -   3 or more bits reserved for future use

Authorization id field 720 contains a handle to the user who configuredthe database record 700, for example, a password, user identifier, orthe like (may be encrypted). Content links field 722 contains a YES/NOflag for whether there are multiple content fields associated with thedatabase record 700. A separate database entity (not shown), for examplea database table, can be maintained with 3 fields: one containing amatching rec id field 702 to associate the content to the deliverablecontent database record 700, one for the content type (like content typefield 710), and one for the content (like content field 712). There maybe a plurality of database records in the separate database entity thatare associated with the deliverable content database record 700. Thevalue in the rec id field 702 will be used to join all content items.

Applications specific data fields 724 are available for the SDPS beingan integrated solution with some other service. Location field 704,direction field 706, time criteria field 708, and delivery activationsetting(s) field 718 together form the situational location informationassociated with the content which establishes a delivery.

FIG. 7B depicts a preferred embodiment of a data record in the keyworddata of the present invention. A keyword data record 750 is joined to adeliverable content database record 700 through a matching rec id field752. Keywords field 754 contains one or more comma separated textstrings used to associate criteria to the deliverable content databaserecord 700. Phrases containing blank separated words are enclosed inquote marks. In one embodiment of the present invention, a RDPS userspecifies interests that are matched to the keywords field 754. Only theuser's interests, along with the RDPS situational location, will causedelivery of associated content. An alternative embodiment formaintaining keyword data will associate a plurality of keyword datarecords 750 to a deliverable content database record 700, eachcontaining a singular keyword, or phrase, in keywords field 754. Fields704, 706, 708, 718, and 754 are system delivery constraints of thepresent invention.

FIG. 8 depicts a preferred embodiment of a data record in the locationhierarchy data of the present invention. A location hierarchy datarecord 800 has fields as shown. Rec id field 802 is a unique identifierto the record. Rec id field 802 is system generated, for example, usingan Oracle unique sequence number function upon inserting the record(i.e. database row). Location field 804 is a location of the nature asdescribed for location field 704. Ascending location field 706 is avalue found in rec id field 802 of another location hierarchy datarecord 800. If used, the configuration of this table must be performedcarefully so as to affect its use appropriately. Semantically, field 806must be an ascending location to field 804. For example, Texas isascending to Denton County, and Denton County is ascending to FlowerMound. Similarly, a set of MAPSCO grid numbers, that surround a MAPSCOreference grid D of map 691, are ascending to MAPSCO reference grid D ofmap 691. Ascending implies zooming out to cover more surrounding area.Location hierarchy data is searched in the following manner:

-   -   For content by candidate delivery events, content is retrieved        by the location, and any locations descending to that location        (i.e. zoom in)    -   For situational location queries, content is optionally        retrieved by the location and descending locations, and        optionally, ascending locations as necessary (i.e. zoom out)        according to parameters (discussed below)

FIG. 9A depicts a preferred embodiment of a data record in theregistration data of the present invention. A registration data record900 is maintained by the SDPS and includes fields as shown. Device idfield 902 is a unique handle to an RDPS. Depending on the installation,device id field 902 may be a telephone #, physical or logical address,or some other unique handle to the RDPS. Communications bind informationfield 904 is a record describing the communications session between theRDPS and SDPS, as is well known in the art. In some embodiments, field904 contains capability information sent from the RDPS so that only theappropriate content is delivered, for example acceptable types of, oracceptable amounts (size) of, content. Interests field 906 contains oneor more comma separated user configured text strings used to match tothe keywords field 754. If used, only the user's interests, along withthe RDPS situational location, will cause proactive delivery ofassociated content. Filter criteria field 908 is identical in nature tointerests field 906 and keywords field 754 except the criteria is forexclusion. If used, filter criteria field 908 is also compared withkeywords field 754. Thus, the RDPS user can configure interests forinclusion through field 906, or criteria for exclusion through field908. Movement tolerance field 910 defines the minimal amount of movementsince the last delivery content retrieval attempt that determines toperform another retrieval. Movement tolerance field 910 is optionaldepending on the installation. The movement tolerance may be a systemwide setting enforced by the SDPS, associated to a class of RDPSdevices, or individualized by the user or system. Field 910 may not bepresent because the movement tolerance is maintained by the RDPS, or isnot applicable to the installation (e.g. RDPS physically connected, orlocated by caller id). The movement tolerance depends on the installeduse of location field 704. For example, in a coordinate system, adistance may be configured. In an overlay map, region, or cell change, anumber of regions or cells from a previous location may be configured.Fields 906 and 908 are user configured delivery constraints of thepresent invention. Registration data record 900 presence enablesdelivery to the associated RDPS, otherwise the RDPS is not an eligiblereceiver. Obvious error handling at the SDPS ignores all requests thatare not from a RDPS with a device id in the registration data (exceptfor registration types of requests (i.e. events)).

FIG. 9B depicts a preferred embodiment of a data record in the locationhistory data of the present invention. A location history data record920 is maintained for the travels of a RDPS, and includes fields asshown. Device id field 922 is identical in nature to device id field902. Location field 924 is identical in nature to location field 704.Direction field 926 is identical in nature to direction field 706. Eventposted field 928 is a YES/NO flag for whether or not this locationhistory data record 920 is associated with generating a CADE. Date/timestamp field 930 is the time that the RDPS was detected at the associatedlocation and specified direction of fields 924 and 926. Direction field926 is optional depending on the installation, as discussed above.

FIG. 9C depicts a preferred embodiment of a data record in the SDPStransmission history data of the present invention. A transmissionhistory data record 940 is maintained at the SDPS for all content thatis transmitted to the RDPS, and includes fields as shown. Device idfield 942 is identical in nature to device id field 902. Location field944 is identical in nature to location field 704. Direction field 946 isidentical in nature to direction field 706. Rec id field 948 contains acopy of rec id field 702 for content that was transmitted to the RDPS offield 942. Indicator sent field 950 is a YES/NO flag for whether or notthe content was actually transmitted, or a content delivery indicatorfor the content was transmitted. Date/time stamp field 952 is the timethat content described by field 948 was transmitted to the RDPS.Direction field 946 is optional depending on the installation, asdiscussed above.

FIG. 9D depicts a preferred embodiment of a data record in the RDPStransmission history data of the present invention. A transmissionhistory data record 970 is maintained at the RDPS for all content thatis received by the RDPS, and includes fields as shown. Date/time stampfield 972 is the time that content described by rec id field 976 wasreceived by the RDPS. Indicator sent field 974 is a YES/NO flag forwhether or not the content was actually received, or an indicator forthe content was received. Rec id field 976 contains a copy of rec idfield 702 for content that was received by the RDPS. Speed referenceinformation field 978 contains a phone number for automatic dialing, aweb page reference for automatic transposition, or both. Speed referenceinformation field 978 is obtained by the RDPS from field 716. Short textfield 980 is obtained by the RDPS from 714. Location field 982 isidentical in nature to field 704. Direction field 984 is identical innature to field 706. Field 982 and 984 may not be used if thisinformation is maintained at the SDPS. Fields 982 and 984 are preferablyused when the RDPS handles CADE generation, or if the SDPS additionallytransmits the information with the content. Direction field 984 isoptional depending on the installation, as discussed above.

FIG. 10A depicts a preferred embodiment high level examplecomponentization of a RDPS of the present invention when the RDPSgenerates the candidate delivery event. An RDPS 1000 includes systemmanager 1002, location management system 1004, system event management1006, user event management 1008, user interface management 1010, andcommunications interface 1012. System manager 1002 is the operatingsystem environment of the RDPS 1000. Location management system 1004provides means for locating the RDPS 1000, for example GPSfunctionality. System event management 1006 provides an interface tosystem event processing relevant to the present invention that is notdirectly caused by a user. User event management 1008 provides aninterface to event processing relevant to the present invention that isdirectly caused by a user, for example when the user uses the RDPS userinterface. User interface management 1010 is the user interface systemenvironment of the RDPS 1000, for example, a variety of MicrosoftWindows (Microsoft and Windows are trademarks of Microsoft corporation),a wireless phone interface, or some other user interface system.Communications interface 1012 provides the interface between the RDPS1000 and the SDPS.

FIG. 10B depicts a preferred embodiment high level examplecomponentization of a RDPS of the present invention when the SDPSgenerates the candidate delivery event. An RDPS 1020 includes a systemmanager 1022, system event management 1026, user event management 1028,user interface management 1030, and communications interface 1032.System manager 1022 is the operating system environment of the RDPS1020. System event management 1026 provides an interface to system eventprocessing relevant to the present invention that is not directly causedby a user. User event management 1028 provides an interface to eventprocessing relevant to the present invention that is directly caused bya user, for example when the user uses the RDPS user interface. Userinterface management 1030 is the user interface system environment ofthe RDPS 1020, for example, a variety of Microsoft Windows (Microsoftand Windows are trademarks of Microsoft corporation), a wireless phoneinterface, or some other user interface system. Communications interface1032 provides the interface between the RDPS 1020 and the SDPS. RDPS1000 and RDPS 1020 may further include a local cache with a cachemanagement component that facilitates cacheing the deliverable contentdatabase and associated data at the RDPS for efficient access.

FIG. 10C depicts a block diagram of a data processing system useful forimplementing RDPS aspects of the present invention, and SDPS aspects ofthe present invention. A data processing system 1050 according to thepresent invention includes at least one processor 1052 coupled to a bus1054. The data processing system 1050 also includes main memory 1056,for example, random access memory (RAM). Optionally, the data processingsystem 1050 may include secondary storage devices 1058 such as a harddisk drive 1060, and/or removable storage device 1062 such as a compactdisk, floppy diskette, or the like, also connected to bus 1054. In oneembodiment, secondary storage devices could be remote to the dataprocessing system 1050 and coupled through an appropriate communicationsinterface.

The data processing system 1050 may also include a display deviceinterface 1064 for driving a connected display device (not shown). Thedata processing system 1050 may further include one or more inputperipheral interface(s) 1066 to input devices such as a keyboard,telephone keypad, Personal Digital Assistant (PDA) writing implements,mouse, voice interface, or the like. User input (i.e. user events) tothe data processing system are inputs accepted by the input peripheralinterface(s) 1066. The data processing system 1050 may still furtherinclude one or more output peripheral interface(s) 1068 to outputdevices such as a printer, facsimile device, or the like.

Data processing system 1050 will include a communications interface 1070for communicating to another data processing system 1072 via analogsignal waves, digital signal waves, infrared proximity, copper wire,optical fiber, or the like. Other data processing system 1072 is an RDPSwhen data processing system 1050 is an SDPS. Other processing system1072 is an SDPS when data processing system 1050 is an RDPS. In anycase, the RDPS and SDPS are said to be interoperating whencommunicating. Thus, the RDPS and SDPS form an interoperatingcommunications system between which data may be communicated.

Data processing system programs (also called control logic) may becompletely inherent in the processor 1052 being a customizedsemiconductor, or may be stored in main memory 1056 for execution byprocessor 1052 as the result of a read-only memory (ROM) load (notshown), or may be loaded from a secondary storage device into mainmemory 1056 for execution by processor 1052. Such programs, whenexecuted, enable the data processing system 1050 to perform features ofthe present invention as discussed herein. Accordingly, such dataprocessing system programs represent controllers of the data processingsystem.

In one embodiment, the invention is directed to a control logic programproduct comprising a processor 1052 readable medium having control logic(software) stored therein. The control logic, when executed by processor1052, causes the processor 1052 to perform functions of the invention asdescribed herein.

In another embodiment, the invention is implemented primarily inhardware, for example, using a prefabricated component state machine (ormultiple state machines) in a semiconductor element such as processor1052.

Those skilled in the art will appreciate various modifications to thedata processing system 1050 without departing from the spirit and scopeof the invention. Data processing system 1050, as discussed, isrepresentative of a RDPS of the present invention. Data processingsystem 1050, as discussed, is representative of a SDPS of the presentinvention.

Receiving Data Processing System Candidate Delivery Event GenerationEmbodiment

FIG. 11 depicts a flowchart for describing data processing systemaspects relevant to a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event generation by theRDPS. When the RDPS is enabled, for example, by a power switch, systemmanager processing begins at block 1102 and continues to block 1104where the system appropriately initializes, for example to defaultinterfaces. Processing continues to block 1106 where the locationmanagement system is initialized as is appropriate for the particularRDPS, and then on to block 1108 where a movement tolerance is defaulted,depending on the RDPS installation, and depending on what it was duringthe last power-on. The movement tolerance may be user configurable orsystem set, and is therefore either a system delivery constraint, oruser configured delivery constraint. Thereafter, block 1110 defaultssituational location information to the most recent setting for a CADEfrom last power-on, or system just started if this is the firstpower-on, and block 1112 waits for a user event or system event. Userinterface management is coupled with the system manager to enable a userto the RDPS. Upon detection of an event, block 1112 flows to block 1114for any user event management processing. Should block 1114 processingreturn, block 1116 performs any system event management processing.Should processing of block 1116 return, block 1118 handles the eventappropriately as is relevant for other events of the RDPS, for example,user interface control of little interest to discussion of the presentinvention. Thereafter, block 1118 flows to block 1112 for processing asdescribed.

An alternate embodiment of FIG. 11 will implement a multithreaded systemwherein events are handled asynchronously as they occur.

FIGS. 12A and 12B depict flowcharts for describing user event managementprocessing aspects of a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event generation by theRDPS. User event management begins at block 1202 and continues to block1204. If block 1204 determines that the user event is powering the RDPSoff, then block 1206 communicates with the SDPS to remove (if any) itsRDPS data record 900 from the registration data, block 1208 terminatesany communication session gracefully (if required) depending on theRDPS, block 1210 saves settings, for example, the movement tolerance anddelivery setting for the next power on, and RDPS processing stops atblock 1211.

If block 1204 determines the RDPS was not turned off, then processingcontinues to block 1212. If block 1212 determines that the user selectedto enable communications with the SDPS, then block 1214 establishescommunications with the SDPS (if not already established), and block1216 consults the current delivery setting. In one embodiment, block1214 through 1220 may be processed just as the result of a wirelessdevice being powered on. If block 1216 determines that the contentdelivery setting for receiving situational location dependent content isenabled, then block 1218 communicates with the SDPS for inserting aregistry data record 900 into the registry data. Thereafter, block 1220sets a RDPS user interface indicator showing that communications to theSDPS is enabled, and processing returns to block 1112 of FIG. 11 by wayof off page connector 11000. If block 1216 determines the deliverysetting is not enabled, then processing continues to block 1220.

If block 1212 determines that the user did not select to enablecommunications to the SDPS, then processing continues to block 1222. Ifblock 1222 determines that the user selected to disable SDPScommunications, then block 1224 communicates with the SDPS to remove itsregistry data record 900 from registry data, block 1226 terminates thecommunications session gracefully (if required) depending on the RDPSembodiment, block 1228 sets the communications to SDPS user interfaceindicator to disabled, and processing continues back to block 1112. Inone embodiment, block 1224 through 1228 may be processed just as theresult of a wireless device being powered off.

If block 1222 determines the user did not select to disablecommunications to the SDPS, then processing continues to block 1230. Ifblock 1230 determines that the user selected to modify the RDPS contentdelivery setting, then the user modifies the setting at block 1232, thedelivery setting is set accordingly at block 1234. Preferably, blocks1230/1232 allow a user to toggle the content delivery setting. Nocontent will be delivered when this setting is disabled. Beingregistered with the SDPS constitutes being eligible for delivery.Alternative embodiments won't have such a feature. The content deliverysetting is a user configured delivery constraint. Block 1234 also setsand an indicator in the user interface for displaying that setting, andblock 1236 communicates with the SDPS to insert or remove its registrydata record 900 should the setting be different than previous. Ofcourse, appropriate error handling is performed by block 1236 if thereis no communications enabled. Thereafter, processing continues to block1112.

If block 1230 determines that the user did not select to modify thecontent delivery setting, then processing continues to block 1238. Ifblock 1238 determines that the user selected to modify the movementtolerance, then the user modifies a validated movement tolerance atblock 1240, the movement tolerance is set at block 1242, and processingcontinues back to block 1112.

If block 1238 determines that the user did not select to modify themovement tolerance, then processing continues to block 1244. If block1244 determines that the user selected a content delivery indicator, asmaintained in a transmission history data record 970 for deliverablecontent from the SDPS, then block 1246 communicates with the SDPS usingthe rec id field 976. In one embodiment, the user peruses thetransmission history data in response to receiving a content deliveryindicator from the SDPS. In another embodiment, correlation ismaintained between individual user interface indicators to theirassociated transmission history data record 970 for allowing the user tosimply select the indicator in the user interface for communicating withthe SDPS to deliver the associated content. Providing a visual and/oraudible presentation of the indicator is well known in the art, and maybe implemented with a variety of methods. Block 1246 makes the requestfor content to the SDPS with the rec id 976. Thereafter, via a receivedsystem event, blocks 1318 through 1326 handle receipt, delivery, andRDPS user interface presentation of the content in a manner appropriateto the content type from the SDPS. Processing continues from block 1246back to block 1112.

If block 1244 determines that the user did not select an indicator ofdeliverable content, then processing continues to block 1250 by way ofoff page connector 12000. If block 1250 determines that the userselected to configure interests or filters, then block 1252 interfaceswith the user to configure interests or filters which are saved locallyat block 1254, and processing continues back to block 1112 by way of offpage connector 11000. Any configured interests and filters arecommunicated to the SDPS at blocks 1218 and 1236 as part ofregistration. Interests field 906 and filter criteria field 908 are setwith data configured at block 1252. The RDPS must de-register andre-register with new settings. In an alternative embodiment, block 1254communicates with the SDPS to update the RDPS′ registry data record 900.

If block 1250 determines that the user did not select to configureinterests or filters, then processing continues to block 1256. If block1256 determines the user selected to perform a situational locationquery, then the user specifies validated parameters (discussed with FIG.15B) at block 1258. Thereafter, block 1260 communicates an appropriateformatted request to the SDPS. Thereafter, via a received system event,blocks 1318 through 1326 handle receipt, delivery, and RDPS userinterface presentation of the content in a manner appropriate to thecontent type from the SDPS. Processing leaves block 1260 and returns toblock 1112.

If block 1256 determines that the user did not select to perform asituational location query, then processing continues to block 1264. Ifblock 1264 determines that the user selected to query the number ofknown RDPS devices at a location(s) (i.e. a client count request), thenblock 1266 interfaces with the user to specify valid parametersincluding situational location information and time criteria, andprocessing continues to block 1260 which was described. A contentspecification parameter may also be specified for retrieving thesituational location content as well. Time criteria embodiments includeany time window in history, a current time window (of request,transmission of request, SDPS receipt of request, or processing therequest), or a truncated precision time. Truncated precision time allowsspecifying time windows (e.g. 12:04 pm implies 4 minutes after 12:00 pmand additionally any number of seconds up to and not including 5 minutesafter 12:00 pm).

If block 1264 determines that the user did not select to query thenumber of RDPS devices at a location(s) (i.e. a client count request),then processing continues to block 1268. If block 1268 determines thatthe user selected to browse transmission history data, then block 1270interfaces with the user until he either exits, or selects informationfrom the speed reference information field 978 from a transmissionhistory data record 970. Preferably, block 1270 permits scrollingtransmission history data records 970 with fields columnized. If, atblock 1272, the user selected information of field 978, then block 1274automatically performs the action, an automatic dialing of a telephonenumber, or automatic transposition to a web page. Speed referenceinformation field 978 is preferably related to content that wasdelivered as referenced by rec id field 976. Thereafter, processingcontinues back to block 1112. If block 1272 determines that the userexited from block 1270, then processing continues back to block 1112.

If block 1268 determines that the user did not select to browse thetransmission history data, then processing stops at block 1276.

Note that some RDPS embodiments will not require blocks 1212 through1228 because there may not be an active session required to havecommunications between the RDPS and SDPS.

FIG. 13 depicts a flowchart for describing system event managementprocessing aspects of a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event generation by theRDPS. System event management begins at block 1302, and continues toblock 1304. If block 1304 determines the system event is a positionalattribute change (e.g. location change) from the RDPS locationmanagement system, housekeeping is performed at block 1306 by pruningthe location history data maintained at the RDPS. Pruning may be bytime, number of entries, or other criteria. Thereafter, block 1308determines if a CADE is to be generated. In one embodiment, block 1308compares the current positional attribute (e.g. location) with theformer positional attribute of location history data record 920 thatcontains an event posted YES/NO field 928 set to YES. The distance iscalculated and then compared with the movement tolerance. Block 1308also determines if there was a direction positional attribute change.Processing continues to block 1310 where a location history data record920 is appended to the location history data for the current locationand/or direction with the event posted field 928 set according to whatblock 1308 determined. Block 1310 flows to block 1312.

If block 1312 determines that a CADE is to be generated to the SDPS,then processing continues to block 1314. If block 1314 determines thatthe content delivery setting is set to enabled, then block 1316 formatsand issues a CADE request to the SDPS, and processing continues to block1112 by way of off page connector 11000.

If block 1314 determines that the content delivery setting is notenabled, then processing continues to block 1112. If block 1312determines that a CADE is not to be generated, then processing continuesto block 1112.

If block 1304 determines that the system event was not for a RDPSpositional attribute change from the location management system, thenprocessing continues to block 1318. If block 1318 determines that thesystem event is a transmission from the SDPS with content to deliver, ora content delivery indicator to content, then block 1320 performshousekeeping by pruning transmission history data records 970. Pruningis performed by time, number of entries, or some other criteria. Block1320 flows to block 1322 where the transmission history data is checkedto see if the rec id field 702 for the content or content deliveryindicator, communicated with the system event, is already present in atransmission history data record 970. If the same content was alreadydelivered, a rec id field 976 will match the rec id field 702 forpending presentation. The system event contains parameters including recid field 702 with an indicator status for allowing the user to retrievethe content at a later time. If block 1324 determines the rec id field702 of the event is already contained in the transmission history data,then processing continues back to block 1112 with no deliveryprocessing. If block 1324 determines it is not a redundant delivery,then block 1326 communicates with the SDPS for retrieval of the locationfield 704, direction field 706, content type field 710, short text field714, and speed reference info field 716. Any type of content ispresented to the RDPS user interface in the appropriate manner. Variousembodiments may limit types of content using a variety of methods,located at the RDPS or SDPS. Additionally, either content field 712 andlinked content via content links field 722 is retrieved, or contentdelivery indicator(s) status is retrieved. Thereafter, block 1328appends a transmission history data record 970 to the RDPS transmissionhistory data, and processing continues to block 1112. Blocks 1320through 1326 handle all content (or indicator) delivery to the RDPS,preferably asynchronously to all other RDPS processing.

If block 1318 determines that the system event was not for delivery,then processing stops at block 1330.

An alternative embodiment to FIG. 13 processing will not check historyfor redundant content delivery. Or, a user may enable or disable thefeature.

Block 1326 may also include applying client located filters forfiltering out content. In such an embodiment, a filter criteria field908 may not be required.

The user of the RDPS may also modify the transmission history data toallow a redundant refresh.

FIG. 14 depicts a flowchart for describing the content administrationaspects of the present invention. An administrator, preferably a payingcustomer with rights to configure the deliverable content database,invokes the present invention administration interface. FIG. 14 ispreferably a public access enabled, internet connected user interfacefor modifying the deliverable content database. The administrator mayact on behalf of a paying customer. Processing begins at block 1402 andcontinues to block 1404 where the administrator is first authenticatedas a valid user to perform administration. Then, block 1406appropriately initializes the administration interface. Thereafter,block 1408 waits for user action (a user event). Once a user action isdetected, processing continues.

If block 1410 determines that the administrator selected to list hisdeliverable content database records 700, then the deliverable contentdatabase is searched using the administrator's authorization id againstthe authorization id field 720. Any deliverable content database records700 belonging to the administrator are put into a scrollable list atblock 1414, and processing continues back to block 1408. Options areavailable for appropriately presenting the content, keywords data record750, and linked content via content links field 722. The scrollable listpreferably columnizes the displayable fields 702, 704, 706, 708, 710,714, 716, 718, and 724.

If block 1410 determines the user did not select to list his deliverablecontent database configurations, then processing continues to block1416. If block 1416 determines that the user selected to delete adeliverable content data record 700 from the scrollable list, then block1418 deletes the record 700 from the content deliverable database alongwith any associated keywords data record 750, and linked content viacontent links field 722. Thereafter, block 1420 updates the scrollablelist data, and processing continues back to block 1414.

If block 1416 determines that the administrator did not select todelete, then processing continues to block 1422. If block 1422determines the administrator selected to add a deliverable contentdatabase record 700, then block 1424 interfaces with the administratorfor validated entry. Thereafter, block 1426 generates a unique numberrecord identifier for rec id field 702, block 1428 inserts into thedeliverable content database, block 1430 inserts any associated keyworddata record 750 to the keyword data, and processing continues back toblock 1414. Keywords specification allows associating delivery contentto a user's interests or filters in registration data for establishing abasis of delivery. Block 1424 provides appropriate interfaces forspecifying and reviewing all types of content. Block 1428 additionallypopulates linked content if content links field 722 is used. Once adeliverable content database record 700 is inserted, it is instantlyactivated for candidate delivery. The delivery is proactive when theRDPS situational location is automatically determined.

If block 1422 determines the user did not select to add a deliverablecontent database record 700, then processing continues to block 1432. Ifblock 1432 determines that the user selected to modify locationhierarchy data records 800, then the user modifies the data at block1436 and processing continues back to block 1408. If block 1432determines the user did not select to modify location hierarchy data,then processing continues to block 1434 where other user actions arehandled. Other user actions include scrolling, window manipulation,exiting the administration interface, or other navigation not relevantfor discussion. Processing then continues back to block 1408.

Preferably, the block 1432 option only presents itself to a specialsuper-user administrator who is unlikely to cause problems for all otheradministrated configurations. It is very important that all data bemaintained with integrity by blocks 1418 and 1428. For example, adeliverable content database record 700 deleted should not be referencedby transmission history data 940. The rec id field 702 will no longer bevalid. FIG. 14 processing may include an update deliverable databaserecord option in alternative embodiments.

FIGS. 15A, 15B, and 15C depict flowcharts for service event handlingaspects of a preferred embodiment of the SDPS of the present invention,in the context of candidate delivery event generation by the RDPS. SDPSprocessing relevant to the present invention begins at block 1502 when aservice event (request) is posted (generated) to the SDPS, and continuesto block 1504. All events are requests containing parameters includingat least the device id 902 of the RDPS. Flowchart processing blockdiscussions describe other parameters received, depending on the event(request) type.

If block 1504 determines that the event is an RDPS registration request,then block 1506 accesses registration data to see if the RDPS uniquedevice id is already present (i.e. already registered) in a device idfield 902. Thereafter, if block 1508 determines the RDPS does notalready have a registration data record 900 registered, then block 1510inserts a registration data record 900 into registration data. Much ofthe information may be provided as parameters to the event, oralternatively, block 1506 communicates with the RDPS to gather neededfield information. Then, block 1512 provides an acknowledgement to theRDPS, or an error if already registered. Processing continues to block1514 by way of off page connector 15000. If block 1514 determines thatthe RDPS was newly registered (i.e. an error was not provided), thenblock 1516 searches the deliverable content database for deliveryactivation setting(s) field 718 with a “deliver on RDPS registration”bit enabled. Thereafter, if block 1517 determines there are deliverablecontent database records 700 with the bit set, then block 1518 processesapplicable content transmission (see FIG. 16), and processing stops atblock 1519. If block 1517 determines that there was no records, thenprocessing stops at block 1519. If block 1514 determines that the RDPSwas already registered (existing entry), then processing continues toblock 1519. Thus, a situational location change may be an RDPS statechanged to registered.

If block 1504 determines that the event was not a registration request,then processing continues to block 1520. If block 1520 determines thatthe event is a de-registration request, then block 1522 access theregistration data for the device id field 902 provided with the eventparameters, and if block 1524 determines one is found, then it isdeleted at block 1526, and then an acknowledgement is provided at block1512 with processing continuing from there as was described except block1516 searches for the “deliver on RDPS termination bit” enabled. Ifblock 1524 determines that a registration data record 900 was not found,then an error is provided at block 1512 and processing continues aspreviously described. Thus, a situational location change may be an RDPSstate changed to terminated.

If block 1520 determines that the event was not for an RDPSde-registration, then processing continues to block 1528. If block 1528determines that the RDPS user selected to retrieve content for a contentdelivery indicator previously sent to the RDPS by the SDPS, then block1530 accesses the deliverable content database by the rec id field 702provided as parameters to the event, processing continues to block 1532where the applicable content is processed (see FIG. 16), and processingstops at block 1534.

If block 1528 determines that the event was not an indicator selectionrequest, then processing continues to block 1536. If block 1536determines the event is a CADE generated by the RDPS, then block 1538parses parameters from the request, for example, location and direction.Thereafter, block 1540 completes determination of the situationallocation from the parameters and converts into a form suitable forsearching the deliverable content database. Block 1540 consults locationhierarchy data and determines the date/time to further refine the RDPSsituational location. Then, block 1544 retrieves deliverable contentdatabase records using RDPS parameters and any applicable locationhierarchy data records 800 to fields 704, 706 and 708. Also used is datain interests field 906 and filter criteria 908 of the RDPS for comparingagainst keywords field 754 in keywords data associated with contentdeliverable database records 700. Delivery activation setting(s) field718 is consulted as well. In some embodiments, the capabilities of theRDPS are maintained in field 904 to ensure no content of aninappropriate type is delivered. Thus, field 904 may also be utilized.If block 1546 determines that content was found, then block 1548 prunestransmission history data records 940 (by time, depth of records, etc.),block 1550 accesses the SDPS transmission history data, and block 1552continues. If block 1552 determines that the content was not alreadytransmitted (device id field 942 and rec id field 948 don't match anyrecord in transmission history), then processing continues to block 1532for processing described by FIG. 16. If block 1552 determines that thecontent was transmitted, then processing stops at block 1534. If block1546 determines content applies, then processing stops at block 1534.

If block 1536 determines that the event was not a CADE, then processingcontinues to block 1554 by way of off page connector 15002. If block1554 determines that the event is for a situational location query, thenblock 1556 searches deliverable content database records 700 withparameters from the RDPS: positional attribute parameters from the RDPSwith the location field 704 and direction field 706, time criteria withtime criteria field 708, and so on. All fields associated to record 700are searchable through parameters. Block 1556 also applies locationhierarchy data depending on a zoom specification parameter. The zoomspecification allows control over the block 1556 search algorithm forwhether or not to use hierarchy data, and whether or not to checkdescending locations, ascending locations up to a maximum thresholdparameter of content, both descending and ascending (respectively) up toa threshold of content, or neither ascending nor descending hierarchydata functionality. The maximum threshold parameter may be specifiedregardless, and optionally limits the amount of content to deliver tothe RDPS by size, number of content instances, or number of hierarchicaldata record nestings to search. Further still block 1556 may use field904 as described above, or the user's interest and/or filters asdescribed above. Information for records found are transmitted ascontent to the RDPS at block 1558 (see FIG. 16) and processing stops atblock 1572.

If block 1554 determines that the event was not a situational locationquery, then processing continues to block 1562. If block 1562 determinesthat the request is a client count query request, then block 1564retrieves the known number of RDPS devices at the specified situationallocation (e.g. location/direction) given specified time criteria; thenumber of transmission history data records 940 for unique values in recid field 948 that contain a date/time stamp 952 according to the user'sspecified time criteria. A null time criteria parameter implies use thecurrent time of processing the request with a truncated precision for atime window. Otherwise, a specified time window was entered by the user,or automatically inserted as a parameter by the RDPS or SDPS. Presenceof the content specification parameter implies to additionally retrievecontent from the deliverable content database as described by blocks1538 through 1544. This allows providing information (e.g. graphical) tocomplement presentation of the total number of RDPS devices identified.Processing then continues to block 1558 for transmitting the count ascontent.

If block 1562 determines that the event was not a client count queryrequest, then processing continues to block 1570 where any other SDPSevent (request) is processed as is appropriate for the particularservice application, and processing stops at block 1572.

FIG. 16 depicts a flowchart for describing the content transmissionaspects of the present invention. FIG. 16 describes processing of blocks1518, 1532, 1558, 2018, 2032, and 2058. Processing begins at block 1602,continues to block 1604 where registration data is accessed forcommunications bind information field 904 that is inserted when the RDPSregisters, and then continues to block 1606. Block 1606 checks the sizeof the transmission destined for the RDPS. Thereafter, if block 1608determines that the information is small enough to not worry abouttransmission, then block 1610 transmits the situational locationdependent information using field 904, block 1612 appends a transmissionhistory data record 940 to transmission history data, and processingstops at block 1616. Block 1610 may first compress and/or encryptcontent transmission for efficient and/or safe communications that isthen decompressed and/or decrypted by the RDPS at block 1326. Contentmay also by transmitted at block 1610 depending on capabilities of theRDPS maintained in field 904, for example, transmission speed, memory,storage space, etc. Thus, block 1610 may transmit using transmissiondelivery constraints of field 904.

If block 1608 determines there may be too much information tounquestionably transmit, then block 1614 transmits content deliveryindicator(s) information to the RDPS and processing continues to block1612. Thus, the total size of the transmission is a transmissiondelivery constraint affecting the delivery information of the content.Of course, FIG. 16 could always transmit an indicator, or a transmissiondelivery constraint size could be configured to cause content deliveryindicators delivered all, or most, of the time.

Block 1608 may use a system size setting (e.g. number of bytes), or mayuse size information relative to RDPS capabilities maintained incommunications bind information field 904.

Server Data Processing System Candidate Delivery Event GenerationEmbodiment

The reader should make note of the nearly identical descriptions andenumerations between the figures in different embodiments. The rightmosttwo digits of the block numbering have been preserved to facilitatecorrelation. FIG. 17 correlates FIG. 11, and so on. FIG. 14 and FIG. 16are applicable to both embodiments: SDPS CADE generation and RDPS CADEgeneration.

FIG. 17 depicts a flowchart for describing data processing systemaspects relevant to a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event generation by theSDPS. When the RDPS is enabled, for example, by a power switch, systemmanager processing begins at block 1702 and continues to block 1704where the system appropriately initializes, for example to defaultinterfaces. Processing continues to block 1712. Block 1712 waits for auser event or system event. User interface management is coupled withthe system manager to enable a user to the RDPS. Upon detection of anevent, block 1712 flows to block 1714 for any user event managementprocessing. Should block 1714 processing return, block 1716 performs anysystem event management processing. Should processing of block 1716return, block 1718 handles the event appropriately as is relevant forother events of the RDPS, for example, user interface control of littleinterest to discussion of the present invention. Thereafter, block 1718flows to block 1712 for processing as described.

An alternate embodiment of FIG. 17 will implement a multithreaded systemwherein events are handled asynchronously as they occur.

FIGS. 18A and 18B depict flowcharts for describing user event managementprocessing aspects of a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event generation by theSDPS. User event management begins at block 1802 and continues to block1804. If block 1804 determines that the user event is powering the RDPSoff, then block 1806 communicates with the SDPS to remove (if any) itsRDPS data record 900 from the registration data, block 1808 terminatesany communication session gracefully (if required) depending on theRDPS, block 1810 saves settings, for example, the delivery setting forthe next power on, and RDPS processing stops at block 1811.

If block 1804 determines the RDPS was not turned off, then processingcontinues to block 1812. If block 1812 determines that the user selectedto enable communications with the SDPS, then block 1814 establishescommunications with the SDPS (if not already established), and block1816 consults the current delivery setting. In one embodiment, block1814 through 1820 may be processed just as the result of a wirelessdevice being powered on. If block 1816 determines that the contentdelivery setting for receiving situational location dependent content isenabled, then block 1818 communicates with the SDPS for inserting aregistry data record 900 into the registry data. Thereafter, block 1820sets a RDPS user interface indicator showing that communications to theSDPS is enabled, and processing returns to block 1712 of FIG. 17 by wayof off page connector 17000. If block 1816 determines the deliverysetting is not enabled, then processing continues to block 1820.

If block 1812 determines that the user did not select to enablecommunications to the SDPS, then processing continues to block 1822. Ifblock 1822 determines that the user selected to disable SDPScommunications, then block 1824 communicates with the SDPS to remove itsregistry data record 900 from registry data, block 1826 terminates thecommunications session gracefully (if required) depending on the RDPSembodiment, block 1828 sets the communications to SDPS user interfaceindicator to disabled, and processing continues back to block 1712. Inone embodiment, block 1824 through 1828 may be processed just as theresult of a wireless device being powered off.

If block 1822 determines the user did not select to disablecommunications to the SDPS, then processing continues to block 1830. Ifblock 1830 determines that the user selected to modify the RDPS contentdelivery setting, then the user modifies the setting at block 1832, thedelivery setting is set accordingly at block 1834. Preferably, blocks1830/1832 allow a user to toggle the content delivery setting. Nocontent will be delivered when this setting is disabled. Beingregistered with the SDPS constitutes being eligible for delivery.Alternative embodiments won't have such a feature. Block 1834 also setsan indicator in the user interface for displaying that setting, andblock 1836 communicates with the SDPS to insert or remove its registrydata record 900 should the setting be different than previous. Ofcourse, appropriate error handling is performed by block 1836 if thereis no communications enabled. Thereafter, processing continues to block1712.

If block 1830 determines that the user did not select to modify thecontent delivery setting, then processing continues to block 1844. Ifblock 1844 determines that the user selected a content deliveryindicator, as maintained in a transmission history data record 970 fordeliverable content from the SDPS, then block 1846 communicates with theSDPS using the rec id field 976. In one embodiment, the user peruses thetransmission history data in response to receiving a content deliveryindicator from the SDPS. In another embodiment, correlation ismaintained between individual user interface indicators to theirassociated transmission history data record 970 for allowing the user tosimply select the indicator in the user interface for communicating withthe SDPS to deliver the associated content. Providing a visual and/oraudible presentation of the indicator is well known in the art and maybe implemented with a variety of methods. Block 1846 makes the requestfor content to the SDPS with the rec id 976. Thereafter, via a receivedsystem event, blocks 1918 through 1926 handle receipt, delivery, andRDPS user interface presentation of the content in a manner appropriateto the content type from the SDPS. Processing continues from block 1846back to block 1712.

If block 1844 determines that the user did not select an indicator ofdeliverable content, then processing continues to block 1850 by way ofoff page connector 18000. If block 1850 determines that the userselected to configure interests or filters, then block 1852 interfaceswith the user to configure interests or filters which are saved locallyat block 1854, and processing continues back to block 1712 by way of offpage connector 17000. Any configured interests and filters arecommunicated to the SDPS at blocks 1818 and 1836 as part ofregistration. Interests field 906 and filter criteria field 908 are setwith data configured at block 1852. The RDPS must de-register andre-register with new settings. In an alternative embodiment, block 1854communicates with the SDPS to update the RDPS′ registry data record 900.

If block 1850 determines that the user did not select to configureinterests or filters, then processing continues to block 1856. If block1856 determines the user selected to perform a situational locationquery, then the user specifies validated parameters (discussed with FIG.20B) at block 1858. Thereafter, block 1860 communicates an appropriateformatted request to the SDPS, and thereafter via a received systemevent, blocks 1918 through 1926 handle receipt, delivery, and RDPS userinterface presentation of the content in a manner appropriate to thecontent type from the SDPS. Processing leaves block 1860 and returns toblock 1712.

If block 1856 determines that the user did not select to perform asituational location query, then processing continues to block 1864. Ifblock 1864 determines that the user selected to query the number ofknown RDPS devices at a location(s) (i.e. a client count request), thenblock 1866 interfaces with the user to specify valid parametersincluding situational location information and time criteria, andprocessing continues to block 1860 which was described. A contentspecification parameter may also be specified for retrieving thesituational location content as well. Time criteria embodiments includeany time window in history, a current time window (of request,transmission of request, SDPS receipt of request, or processing therequest), or a truncated precision time. If block 1864 determines thatthe user did not select to query the number of RDPS devices at alocation(s) (i.e. a client count request), then processing continues toblock 1868. If block 1868 determines that the user selected to browsetransmission history data, then block 1870 interfaces with the useruntil he either exits, or selects information from the speed referenceinformation field 978 from a transmission history data record 970.Preferably, block 1870 permits scrolling transmission history datarecords 970 with fields columnized. If, at block 1872, the user selectedinformation of field 978, then block 1874 automatically performs theaction, an automatic dialing of a telephone number, or automatictransposition to a web page. Speed reference information field 978 ispreferably related to content that was delivered as referenced by rec idfield 976. Thereafter, processing continues back to block 1712. If block1872 determines that the user exited from block 1870, then processingcontinues back to block 1712.

If block 1868 determines that the user did not select to browse thetransmission history data, then processing stops at block 1876.

Note that some RDPS embodiments will not require blocks 1812 through1828 because there may not be an active session required to havecommunications between the RDPS and SDPS. In one embodiment, themovement tolerance is communicated to the SDPS at blocks 1818 and 1836,and then inserted to movement tolerance field 910.

FIG. 19 depicts a flowchart for describing system event managementprocessing aspects of a preferred embodiment of the RDPS of the presentinvention, in the context of candidate delivery event generation by theSDPS. System event management begins at block 1902, and continues toblock 1918. If block 1918 determines that the system event is atransmission from the SDPS with content to deliver, or a contentdelivery indicator to content, then block 1920 performs housekeeping bypruning transmission history data records 970. Pruning is performed bytime, number of entries, or some other criteria. Block 1920 flows toblock 1922 where the transmission history data is checked to see if therec id field 702 for the content or content delivery indicator,communicated with the system event, is already present in a transmissionhistory data record 970. If the same content was already delivered, arec id field 976 will match the rec id field 702 for pendingpresentation. The system event contains parameters including rec idfield 702 with an indicator status for allowing the user to retrieve thecontent at a later time. If block 1924 determines the rec id field 702of the event is already contained in the transmission history data, thenprocessing continues back to block 1712 with no delivery processing. Ifblock 1924 determines it is not a redundant delivery, then block 1926communicates with the SDPS for retrieval of the location field 704,direction field 706, content type field 710, short text field 714, andspeed reference info field 716. Any type of content is presented to theRDPS user interface in the appropriate manner. Various embodiments maylimit types of content using a variety of methods, located at the RDPSor SDPS. Additionally, either content field 712 and linked content viacontent links field 722 are retrieved, or content delivery indicatorstatus is retrieved. Thereafter, block 1928 appends a transmissionhistory data record 970 to the RDPS transmission history data, andprocessing continues to block 1712. Blocks 1920 through 1926 handle allcontent (or indicator) delivery to the RDPS, preferably asynchronouslyto all other RDPS processing.

If block 1918 determines that the system event was not for delivery,then processing stops at block 1930.

An alternative embodiment to FIG. 19 processing will not check historyfor redundant content delivery. Or, a user may enable or disable thefeature.

Block 1926 may also include applying client located filters forfiltering out content. In such an embodiment, a filter criteria field908 may not be required.

The user of the RDPS may also modify the transmission history data toallow a redundant refresh.

FIGS. 20A, 20B, and 20C depict flowcharts for service event handlingaspects of a preferred embodiment of the SDPS of the present invention,in the context of candidate delivery event generation by the SDPS. SDPSprocessing relevant to the present invention begins at block 2002 when aservice event (request) is posted (generated) to the SDPS, and continuesto block 2004. All events are requests containing parameters includingat least the device id 902 of the RDPS. Flowchart processing blockdiscussions describe other parameters received, depending on the event(request) type.

If block 2004 determines that the event is an RDPS registration request,then block 2006 accesses registration data to see if the RDPS uniquedevice id is already present (i.e. already registered) in a device idfield 902. Thereafter, if block 2008 determines the RDPS does notalready have a registration data record 900 registered, then block 2010inserts a registration data record 900 into registration data. Much ofthe information may be provided as parameters to the event, oralternatively, block 2006 communicates with the RDPS to gather neededfield information. Then, block 2012 provides an acknowledgement to theRDPS, or an error if already registered. Processing continues to block2014 by way of off page connector 20000. If block 2014 determines thatthe RDPS was newly registered (i.e. an error was not provided), thenblock 2016 searches the deliverable content database for deliveryactivation setting(s) field 718 with a “deliver on RDPS registration”bit enabled. Thereafter, if block 2017 determines there are deliverablecontent database records 700 with the bit set, then block 2018 processesapplicable content transmission (see FIG. 16), and processing stops atblock 2019. If block 2017 determines that there was no records, thenprocessing stops at block 2019. If block 2014 determines that the RDPSwas already registered (existing entry), then processing continues toblock 2019. Thus, a situational location change may be an RDPS statechanged to registered.

If block 2004 determines that the event was not a registration request,then processing continues to block 2020. If block 2020 determines thatthe event is a de-registration request, then block 2022 access theregistration data for the device id field 902 provided with the eventparameters, and if block 2024 determines one is found, then it isdeleted at block 2026, and then an acknowledgement is provided at block2012 with processing continuing from there as was described except block2016 searches for the “deliver on RDPS termination bit” enabled. Ifblock 2024 determines that a registration data record 900 was not found,then an error is provided at block 2012 and processing continues aspreviously described. Thus, a situational location change may be an RDPSstate changed to terminated.

If block 2020 determines that the event was not for an RDPSde-registration, then processing continues to block 2028. If block 2028determines that the RDPS user selected to retrieve content for a contentdelivery indicator previously sent to the RDPS by the SDPS, then block2030 accesses the deliverable content database by the rec id field 702provided as parameters to the event, processing continues to block 2032where the applicable content is processed (see FIG. 16), and processingstops at block 2034.

If block 2028 determines that the event was not an indicator selectionrequest, then processing continues to block 2036. If block 2036determines the event is a CADE generated by a service of, or to, theSDPS (see FIG. 3B, FIG. 5B, and FIG. 6), then block 2038 parsesparameters from the request, for example, location and direction.Thereafter, block 2040 completes determination of the situationallocation from the parameters and converts into a form suitable forsearching the deliverable content database. Block 2040 consults locationhierarchy data and determines the date/time to further refine the RDPSsituational location. Then, block 2044 retrieves deliverable contentdatabase records using RDPS parameters and any applicable locationhierarchy data records 800 to fields 704, 706 and 708. Also used is datain interests field 906 and filter criteria 908 of the RDPS for comparingagainst keywords field 754 in keywords data associated with contentdeliverable database records 700. Delivery activation setting(s) field718 is consulted as well. In some embodiments, the capabilities of theRDPS are maintained in field 904 to ensure no content of aninappropriate type is delivered. Thus, field 904 may also be utilized.If block 2046 determines that content was found, then block 2048 prunestransmission history data records 940 (by time, depth of records, etc.),block 2050 accesses the SDPS transmission history data, and block 2052continues. If block 2052 determines that the content was not alreadytransmitted (device id field 942 and rec id field 948 don't match anyrecord in transmission history), then processing continues to block 2032for processing described by FIG. 16. If block 2052 determines that thecontent was transmitted, then processing stops at block 2034. If block2046 determines content applies, then processing stops at block 2034.

If block 2036 determines that the event was not a CADE, then processingcontinues to block 2054 by way of off page connector 20002. If block2054 determines that the event is for a situational location query, thenblock 2056 searches deliverable content database records 700 withparameters from the RDPS: positional attribute parameters from the RDPSwith the location field 704 and direction field 706, time criteria withtime criteria field 708, and so on. All fields associated to record 700are searchable through parameters. Block 2056 also applies locationhierarchy data depending on a zoom specification parameter. The zoomspecification allows control over the block 2056 search algorithm forwhether or not to use hierarchy data, and whether or not to checkdescending locations, ascending locations up to a maximum thresholdparameter of content, both descending and ascending (respectively) up toa threshold of content, or neither ascending nor descending hierarchydata functionality. The maximum threshold parameter may be specifiedregardless, and optionally limits the amount of content to deliver tothe RDPS by size, number of content instances, or number of hierarchicaldata record nestings to search. Further still block 2056 may use field904 as described above, or the user's interest and/or filters asdescribed above. Information for records found is transmitted as contentto the RDPS at block 2058 (see FIG. 16) and processing stops at block2072.

If block 2054 determines that the event was not a situational locationquery, then processing continues to block 2062. If block 2062 determinesthat the request is a client count query request, then block 2064retrieves the known number of RDPS devices at the specified situationallocation (e.g. location/direction) given specified time criteria; thenumber of location history data records 920 for unique values in rec idfield 922 that contain a date/time stamp 930 according to the user'sspecified time criteria. A null time criteria parameter implies use thecurrent time of processing the request with a truncated precision for atime window. Otherwise, a specified time window was entered by the user,or automatically inserted as a parameter by the RDPS or SDPS. Presenceof the content specification parameter implies to additionally retrievecontent from the deliverable content database as described by blocks2038 through 2044. This allows providing information (e.g. graphical) tocomplement presentation of the total number of RDPS devices identified.Processing then continues to block 2058 for transmitting the count ascontent.

If block 2062 determines that the event was not a client count queryrequest, then processing continues to block 2070 where any other SDPSevent (request) is processed as is appropriate for the particularservice application, and processing stops at block 2072. FIG. 16 depictsa flowchart for describing the content transmission aspects. FIG. 16describes processing of blocks 2018, 2032, and 2058.

In any of the embodiments described above, a performance consciousimplementation of the present invention including a cache may be pursuedgiven the RDPS has appropriate capability. Without departing from thespirit and scope of the invention, deliverable content database records700, and joined data from them, may be stored at an RDPS. The SDPS maytransmit a compression of the data to the RDPS for decompression andlocal maintaining Transmission may be at registration and/or performedasynchronously to the RDPS as necessary. Thus, the deliverable contentdatabase, and joined data from it, will be accessed locally to the RDPSto prevent real-time communication of what could be large amounts ofcontent. FIG. 14 processing would include updating any RDPS with a localcache when configuration was complete.

While various embodiments of the present invention have been describedabove, it should be understood that they have been presented by way ofexample only, and not limitation. Thus, the breadth and scope of thepresent invention should not be limited by any of the above-describedexemplary embodiments, but should be defined only in accordance with thefollowing claims and their equivalents.

What is claimed is:
 1. A speed reference invocation method in a dataprocessing system, said method comprising: receiving an invocable speedreference according to a situational location of a user of said dataprocessing system and a unique identifier identifying the dataprocessing system; presenting information for said invocable speedreference to said user; and invoking said speed reference upon selectionfor invocation by said user, wherein said invocable speed reference is aphone number and wherein said step of invoking said speed reference uponselection for invocation by said user includes making a call with saidphone number upon selection for invocation by said user.